#ifndef DRIVECONTROLLER_H
#define DRIVECONTROLLER_H

/********** Library Includes **************************************************/

#include <opencv/cv.h>

/********** Local Includes ****************************************************/

#include "robot_structures.h"

/********** Classes ***********************************************************/

struct Command {
	Command() {}
	explicit Command(DriveDirection d, int s, int t) : direction(d), speed(s),
		time(t) {}
	
	DriveDirection direction;
	int speed;
	int time;
};

/**
 * An abstract class that defines the interface for drive controllers.
 */
class DriveController {
public:
	virtual Command next(RobotOrientation, cv::Point goal) = 0;
};



#endif